#include <stdio.h>
#include <stdlib.h>
#include "estructuras.h"
#include "func_config.h"
#include "constantes.h"
#include "log.h"
#include "iniciarFat.h"
#include <string.h>

int32_t tamanoCacheInvalido(int32_t iTamCache)
{
	if (iTamCache == 0 || iTamCache == 4 || iTamCache == 8 || iTamCache == 16 || iTamCache == 32 )
		return 0;
	else
		return 1;
}

int32_t iniciarEstructuraConfiguracion() {

	FILE *punteroDelArchivo;


	config.sIpLocal = malloc(16);
	config.sIPConex = malloc(16);

	punteroDelArchivo = fopen(PFSCONFIGPATH,"r");

		if (!punteroDelArchivo) {
			log_error(log, PROCESO, "No se pudo abrir el archivo de configuración");
			return 0;
		}

	fscanf(punteroDelArchivo,
	                    "---Archivo de configuracion del PFS---\r\nIP_LOCAL= %s\r\nPUERTO_LOCAL= %d\r\nIP_CONEXION= %s\r\nPUERTO_CONEXION= %d\r\nCANTIDAD DE CONEXIONES= %d\r\nTAMANIO_CACHE (EN KB)= %d",
	                    config.sIpLocal,
	                    &config.iPuertoLocal,
	                    config.sIPConex,
	                    &config.iPuertoConex,
	                    &config.iCantMaxConex,
	                    &config.iTamCache);


	log_info(log, "CONFIGURACION", "---Archivo de configuracion del PFS---\r\nIP_LOCAL= <%s>\r\nPUERTO_LOCAL= <%d>\r\nIP_CONEXION= <%s>\r\nPUERTO_CONEXION= <%d>\r\nCANTIDAD DE CONEXIONES= <%d>\r\nTAMANIO_CACHE (EN KB)= <%d>",
	                    config.sIpLocal,
	                    config.iPuertoLocal,
	                    config.sIPConex,
	                    config.iPuertoConex,
	                    config.iCantMaxConex,
	                    config.iTamCache);
	 fclose(punteroDelArchivo);

	 if (config.iCantMaxConex == 0)
	 {
		 log_info(log, PROCESO, "La cantidad máxima de conexión es inválida, debe ser 1 o más conexiones.");
		 return 0;
	 }

	 if (tamanoCacheInvalido(config.iTamCache))
	 {
		 log_info(log, PROCESO, "El tamaño de la cache es inválido.\n");
		 printf("El tamaño de la cache es inválido.\n");
		 printf("Debe ser:\n");
		 printf("0 para desactivarla\n" );
		 printf("4 Kb / 8 Kb / 16 Kb / 32 Kb para activarla");
		 return 0;
	 }
return 1;
}

